#ifndef _XX_YY_BMOCK_MESSAGE
#define _XX_YY_BMOCK_MESSAGE
#include <string>
namespace bmock {
	typedef enum {
				RAW_MEM_PAD
				,IN_OUT_RAW_MEM_PAD_LEN
				,RAW_MEM_LEN
				,RAW_MEM_LEN_CONSOLE
				,ARG_VALUE
				,ARG_PTR
				,ARG_UPDATE
				,FUNC_NAME
				,NOT_RECEIVED
				,INVALID_REPLAY
				,INVALID_VERIFY
				,INVALID_CHECK
				,INVALID_TERMINATE
				,INVALID_EXPECT
				,CHECK_RETURN_REQUIRED
				,INVALID_GET_RESULT
				,BAD_RETURN_TYPE
				,EXPECT_FOR_NON_MOCK
				,INVALID_EXPECT_CALLBACK
				,UNSUPPORTED_DOUBLE_POINTER
				,INVALID_BINARY_INPUT
				,SETUP_EXCEPTION
				,SETUP_FAILURE
				,TEST_EXCEPTION
				,TEST_FAILURE
				,TEARDOWN_EXCEPTION
				,TEARDOWN_FAILURE
				,INVALID_STUB
				,INVALID_IN_RAW_MEM
				,INVALID_STUB_SAME_FUNC
				,TEST_CONTROL_IN_CONSOLE_MODE
				,CONSOLE_CONTROL_IN_TEST_MODE
				,INVALID_MOCK_FUNCTION_DECLARATION
				,ARG_CHECK
				,INVALID_CALL_TIMES_RANGE
				,INVALID_NON_STRICT
				,ARGUMENT_APPEARS_MORE_THAN_ONCE
				,ARGUMENTS_NUM_NOT_EQUAL
				
	} error_code;
	std::string message(error_code);	
	std::string message(error_code, const std::string& name, const std::string& extra_msg = "");
	extern const char *const NULL_STR;
	extern const char *const IGNORE_STR;
};
#endif